package com.briup.day18;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 服务器：通常将资源、业务逻辑处理的内容放入到服务器中
 */
public class Server {
    public static void main(String[] args) throws IOException {
        // 在Java中基于TCP协议创建服务器，我们使用ServerSocket类，
        // 注意在创建服务器时，需要给服务器设定端口号，以保证该服务在设备上是唯一的
        ServerSocket server = new ServerSocket(8888);
        System.out.println("服务器已经启动....");
        // 服务器需要等待客户端的连接，由客户端主动连接后，
        // 就能在网络上与客户端建立一条通信信道
        // 服务器接收客户端连接使用 accept()方法，如果一直没有客户端连接，
        // 那么程序会一直阻塞在本行代码中，如果存在客户端连接，
        // 那么就能够拿到一个客户端连接对象
        Socket client = server.accept();
        System.out.println("客户端对象为:" + client);

        // 通过客户端连接对象，接收来自于客户端的数据，或给客户端发送数据
        InputStream is = client.getInputStream();
        byte[] bytes = is.readAllBytes();
        System.out.println(new String(bytes));

        OutputStream os = client.getOutputStream();
        os.write("你也好，这里是服务器！".getBytes());
        os.flush();
        client.shutdownOutput();

        is.close();
        server.close();
    }
}
